package com.pojoin.cms.dao.base;

import java.util.List;

import com.pojoin.cms.util.criteria.Criteria;
import com.pojoin.cms.util.criteria.orderby.Orderby;

/**
 * 
 * @author pojoin
 *
 * @param <T> 
 * @date 2010-09-22
 */
public interface BaseDao<T> {
	/**
	 * 插入一个对象
	 * @param t
	 */
	public T insertObject(T t);
	/**
	 * 删除一个对象
	 * @param t
	 */
	public void deleteObject(T t);
	/**
	 * 修改一个对象
	 * @param t
	 */
	public T updateObject(T t);
	/**
	 * 根据ID查询一个对象
	 * @param id
	 * @return
	 */
	public T getObjectById(Long id);

	/**
	 * 根据条件进行查询对象列表，并进行升序或降序排序
	 * @param criteria  查询条件
	 * @param orderby  排序
	 * @return
	 */
	public List<T> queryPagerObjectListByCriteriaAndOrderby(Criteria criteria,Orderby orderby,int pageIndex, int pageSize);
	/**
	 * 分页查询，根据HQL语句查询对象列表
	 * @param queryHQL
	 * @return
	 */
	public List<T> queryPagerObjectListByHQL(String queryHQL,int pageIndex, int pageSize);
	
	/**
	 * 查询返回记录的总数量,返回int类型
	 * @param queryHQL 查询返回记录总数的查询语句
	 * @return 
	 */
	public int queryResultCount(String queryHQL);
	/**
	 * 根据HQL查询唯一对象，返回Object
	 * @param queryHQL 返回唯一对象的查询语句
	 * @return Object
	 */
	public T queryUniqueObject(String queryHQL);
	
	/**
	 * 判断某个记录是否存在
	 * @param queryHQL
	 * @return
	 */
	public boolean objectExist(String queryHQL);
}
